package com.conselheiro.web.configuration;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.Map.Entry;
import java.util.Properties;

import org.apache.log4j.Logger;

public class Propriedades {

	private static final String CLINICA_PROPERTIES = "conselheiro.properties";

	private static Logger logger = Logger.getLogger(Propriedades.class);

	private static String caminhoArquivo;

	private static Properties props = new Properties();

	public static void carregar() {
		try {
			if (getCaminhoArquivo() != null) {
				props.load(new BufferedInputStream(new FileInputStream(
						getCaminhoArquivo())));
				logger.info("Propriedades carregadas de: "
						+ getCaminhoArquivo());

				for (Entry<Object, Object> propriedade : props.entrySet()) {
					logger.info(propriedade);
				}
				return;
			}
		} catch (Exception e2) {
			logger.error("Nao foi possivel carregar propriedades de: "
					+ getCaminhoArquivo(), e2);
		}
		try {
			setCaminhoArquivo(Propriedades.class.getClassLoader()
					.getResource(CLINICA_PROPERTIES).getPath());
			props.load(new BufferedInputStream(new FileInputStream(
					getCaminhoArquivo())));
			logger.info("Propriedades carregadas do arquivo padrao: "
					+ getCaminhoArquivo());
			for (Entry<Object, Object> propriedade : props.entrySet()) {
				logger.info(propriedade);
			}
		} catch (Exception e) {
			logger.error(
					"Erro ao carregar propriedades padrao: defina o caminho do arquivo de propriedades",
					e);
		}

	}

	public static String getPropriedade(String propriedade) {
		return props.getProperty(propriedade);
	}

	private static String getCaminhoArquivo() {
		return caminhoArquivo;
	}

	public static void setCaminhoArquivo(String caminho) {
		caminhoArquivo = caminho;
	}

	public static void setPropriedade(String chave, String valor) {
		props.setProperty(chave, valor);
	}

}
